Head rotation tracking from depth-based center of mass

ABSTRACT

The rotation of a user&#39;s head may be determined as a function of depth values from a depth image. In accordance with some embodiments, an area of pixels from a depth image containing a user&#39;s head is identified as a head region. The depth values for pixels in the head region are used to calculate a center of depth-mass for the user&#39;s head. The rotation of the user&#39;s head may be determined based on the center of depth-mass for the user&#39;s head.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No.61/493,785, filed Jun. 6, 2011, which is herein incorporated byreference in its entirety.

BACKGROUND

In many software applications, the orientation of the user's head can beused as an effective and natural form of input. For example, in 3Dgames, virtual reality environments, and visualizations, the orientationof the head can be used to control the orientation of the camera viewingthe scene, giving the user more control over the experience, heighteningimmersion, and freeing the user's hands from controlling the camera bysome other means, such as a joystick, mouse, or hat switch, for othertasks. This is popular, for example, among flight and driving simulatorfans, enabling them to look around a virtual cockpit and quickly scanthe environment.

In the past, these types of head orientation tracking systems have oftentaken one of two approaches. Some require the addition of specializedhardware to the user to enable tracking, such as reflectors or activeinfrared LEDs attached to the user's head or hat. This affects usercomfort, requires preparation for the tracking experience, and requireseither batteries or a cable to power the LEDs. Methods of tracking theuser without hardware augmentation require far more complex andcomputationally expensive algorithms to process camera information anddetermine head orientation. When this information comes from an RGB(i.e., color) camera, as is the case with many current implementations,the quality of the results may be affected by lighting. Many of thealgorithms described in academic literature on the topic requiresignificant processing resources, and so would be impractical for manyapplications.

SUMMARY

This summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used as an aid in determining the scope of the claimed subjectmatter.

Embodiments of the present invention relate to determining a rotation ofa user's head by using depth values from a depth image. An area of adepth image containing a user's head may be identified as a head region.Depth values from pixels in the head region may then be used tocalculate a center of depth-mass that correlates with a rotation of theuser's head. Accordingly, the rotation of the user's head may bedetermined based on the center of depth-mass calculated for the user'shead.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is described in detail below with reference to theattached drawing figures, wherein:

FIG. 1 is a block diagram of an exemplary computing environment suitablefor use in implementing embodiments of the present invention;

FIG. 2 is a flow diagram showing a method for determining a center ofdepth-mass for a user's head and using the center of depth-mass todetermine the rotation of the user's head in accordance with anembodiment of the present invention;

FIGS. 3A and 3B represent depth images with head regions identifiedaround a user's head in accordance with an embodiment of the presentinvention;

FIG. 4 is a plan view showing the top of a user's head and a distance toa point on the user's head from a given reference position thatcorresponds with a depth value for a pixel;

FIGS. 5A-5C are plan views showing the top of a user's head with thecenter of depth-mass shifting to the left or right as the user's headrotates to the left or right;

FIG. 6 is a flow diagram showing a method for using a background depthvalue to determine a center of depth-mass for a user's head and therotation of the user's head in accordance with an embodiment of thepresent invention; and

FIG. 7 is a plan view illustrating a depth of a user's head for a givenpoint as determined based on the depth value of a pixel correspondingwith that point and a background depth value.

DETAILED DESCRIPTION

The subject matter of the present invention is described withspecificity herein to meet statutory requirements. However, thedescription itself is not intended to limit the scope of this patent.Rather, the inventor has contemplated that the claimed subject mattermight also be embodied in other ways, to include different steps orcombinations of steps similar to the ones described in this document, inconjunction with other present or future technologies. Moreover,although the terms “step” and/or “block” may be used herein to connotedifferent elements of methods employed, the terms should not beinterpreted as implying any particular order among or between varioussteps herein disclosed unless and except when the order of individualsteps is explicitly described.

Embodiments of the present invention are directed to using the distanceinformation from a depth camera and a lightweight computation metric totrack the rotation of the user's head. The approach is capable ofrunning in real time with minimal memory and CPU consumption.Additionally, the approach does not require the addition of anyspecialized hardware to the user's head, and also does not require useof an RGB camera. As such, embodiments of the present invention areuseful in determining the rotation of the user's head for any of avariety of different applications. This may include, but is not limitedto, using the rotation to control a camera viewpoint for a video game orother virtual environment.

In accordance with embodiments of the present invention, a depth imagemay be captured from an area in which a user is situated. As is known inthe art, the depth image may comprise a number of pixels with a depthvalue for each pixel. The depth value for each pixel corresponds with adistance between a point on an object in the area being viewed by thedepth camera and a reference position. An area containing the user'shead within the depth image may be identified as a head region. Thedepth values for pixels within the head region may then be used tocalculate a center of depth-mass for the user's head. The center ofdepth-mass may correspond with a center of mass of a solid of uniformdensity where the thickness of the mass is a function of the depthvalues of the pixels within the head region. Because this approachrelies on the depth data from the depth image, this is referred toherein as the “center of depth-mass.” Conceptually, depth may be viewedas a surrogate for density. In some embodiments, this may includesetting a background depth value and determining the center ofdepth-mass for a solid that comprises the thickness of the user's headin the head region determined by the difference between depth values forpixels in the head region and the background depth value. The center ofdepth-mass in such embodiments then generally corresponds with a centerof mass for the solid assuming a uniform density for the solid.

The center of depth-mass provides a good correlation for the rotation ofthe user's head. As such, the rotation of the user's head may bedetermined based on the center of depth-mass calculated from a depthimage. In some embodiments, the rotation may be based on the differencebetween the position of the center of depth-mass and a position of thecenter of the user's head that may also be determined from the depthimage.

Accordingly, in one aspect, an embodiment of the present invention isdirected to one or more computer-storage media storing computer-useableinstructions that, when used by one or more computing devices, cause theone or more computing devices to perform a method. The method includesreceiving depth image data for a depth image, the depth image dataincluding depth values for each of a plurality of pixels. The methodalso includes identifying a head region in the depth image, the headregion corresponding with a user's head. The method further includesdetermining a background depth value. The method also includescalculating a center of depth-mass for the user's head as a function ofdepth values for pixels in the head region, the background depth value,and positions of pixels in the head region. The method further includesidentifying a center of head position. The method still further includesdetermining a rotation of the user's head based on the center ofdepth-mass and the center of head position.

In another embodiment, an aspect of the invention is directed to amethod for using a depth image to determine a rotation of a user's head.The method includes receiving depth image data corresponding with pixelsfor a head region within the depth image. The method also includescalculating a center of depth-mass for the user's head based on depthvalues of the pixels in the head region. The method further includesdetermining the rotation of the user's head based on the center ofdepth-mass.

A further embodiment of the invention is directed to a computing devicecomprising a processor configured to: receive depth values for aplurality of pixels in a depth image; analyze the depth values toidentify a head region that includes a first subset of pixels thatcontain a user's head; determine a background depth value by analyzingdepth values for the first subset of pixels; calculate a center ofdepth-mass as a function of depth values for a second subset of pixelsin the head region that have depth values that do not exceed thebackground depth value, the center of depth-mass being calculated bycomputing a center of mass for a solid of uniform density determinedfrom the depth values for the second subset of pixels and the backgrounddepth value; identify a position in the head region corresponding with acenter of the user's head; and determine a rotation of the user's headbased on the center of depth-mass and the position in the head regioncorresponding with the center of the user's head.

Having briefly described an overview of embodiments of the presentinvention, an exemplary operating environment in which embodiments ofthe present invention may be implemented is described below in order toprovide a general context for various aspects of the present invention.Referring initially to FIG. 1 in particular, an exemplary operatingenvironment for implementing embodiments of the present invention isshown and designated generally as computing device 100. Computing device100 is but one example of a suitable computing environment and is notintended to suggest any limitation as to the scope of use orfunctionality of the invention. Neither should the computing device 100be interpreted as having any dependency or requirement relating to anyone or combination of components illustrated.

The invention may be described in the general context of computer codeor machine-useable instructions, including computer-executableinstructions such as program modules, being executed by a computer orother machine, such as a personal data assistant or other handhelddevice. Generally, program modules including routines, programs,objects, components, data structures, etc., refer to code that performparticular tasks or implement particular abstract data types. Theinvention may be practiced in a variety of system configurations,including hand-held devices, consumer electronics, general-purposecomputers, more specialty computing devices, etc. The invention may alsobe practiced in distributed computing environments where tasks areperformed by remote-processing devices that are linked through acommunications network.

With reference to FIG. 1, computing device 100 includes a bus 110 thatdirectly or indirectly couples the following devices: memory 112, one ormore processors 114, one or more presentation components 116,input/output (I/O) ports 118, input/output components 120, and anillustrative power supply 122. Bus 110 represents what may be one ormore busses (such as an address bus, data bus, or combination thereof).Although the various blocks of FIG. 1 are shown with lines for the sakeof clarity, in reality, delineating various components is not so clear,and metaphorically, the lines would more accurately be grey and fuzzy.For example, one may consider a presentation component such as a displaydevice to be an I/O component. Also, processors have memory. Theinventor recognizes that such is the nature of the art, and reiteratethat the diagram of FIG. 1 is merely illustrative of an exemplarycomputing device that can be used in connection with one or moreembodiments of the present invention. Distinction is not made betweensuch categories as “workstation,” “server,” “laptop,” “hand-helddevice,” etc., as all are contemplated within the scope of FIG. 1 andreference to “computing device.”

Computing device 100 typically includes a variety of computer-readablemedia. Computer-readable media can be any available media that can beaccessed by computing device 100 and includes both volatile andnonvolatile media, removable and non-removable media. By way of example,and not limitation, computer-readable media may comprise computerstorage media and communication media. Computer storage media includesboth volatile and nonvolatile, removable and non-removable mediaimplemented in any method or technology for storage of information suchas computer-readable instructions, data structures, program modules orother data. Computer storage media includes, but is not limited to, RAM,ROM, EEPROM, flash memory or other memory technology, CD-ROM, digitalversatile disks (DVD) or other optical disk storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium which can be used to store the desired informationand which can be accessed by computing device 100. Communication mediatypically embodies computer-readable instructions, data structures,program modules or other data in a modulated data signal such as acarrier wave or other transport mechanism and includes any informationdelivery media. The term “modulated data signal” means a signal that hasone or more of its characteristics set or changed in such a manner as toencode information in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared and other wireless media. Combinations of any of the aboveshould also be included within the scope of computer-readable media.

Memory 112 includes computer-storage media in the form of volatileand/or nonvolatile memory. The memory may be removable, non-removable,or a combination thereof. Exemplary hardware devices include solid-statememory, hard drives, optical-disc drives, etc.

Computing device 100 includes one or more processors that read data fromvarious entities such as memory 112 or I/O components 120. Presentationcomponent(s) 116 present data indications to a user or other device.Exemplary presentation components include a display device, speaker,printing component, vibrating component, etc.

I/O ports 118 allow computing device 100 to be logically coupled toother devices including I/O components 120, some of which may be builtin. Illustrative components include a microphone, joystick, game pad,satellite dish, scanner, printer, wireless device, etc.

Referring now to FIG. 2, a flow diagram is provided that illustrates amethod 200 for determining a center of depth-mass for a user's head andusing the center of depth-mass to determine the rotation of the user'shead in accordance with an embodiment of the present invention. As shownat block 202, depth image data is initially received. This may be depthimage data for a single depth image frame. The depth image may becaptured using known depth camera techniques. As is known in the art,the depth image data may comprise depth values for each of a number ofpixels within the depth image. The depth value for a given pixelcorresponds with a distance between a point on a object being imaged anda reference position.

An area around a user's head is identified within the depth image as ahead region, as shown at block 204. As used herein, a head region is anextent of pixels within a depth image that has been identified asincluding a user's head. The head region may contain the extent of theuser's head or a sub-region of the user's head. Additionally, the headregion may be any shaped or sized area of a depth image in accordancewith embodiments of the present invention. This is illustrated by way ofexamples in FIGS. 3A and 3B. For instance, FIG. 3A shows a depth image300A that includes a user 302A, in which a rectangular area around theuser's head has been identified as a head region 304A. FIG. 3B shows adepth image 300B that includes a user 302B, in which a circular areaaround the user's head has been identified as a head region 304B. Itshould be understood that the depth images 300A and 300B have beensimplified for purposes of illustration herein, and in practice, thedepth images are likely more complex, capturing areas with multipleobjects of varying depth. Additionally, although FIGS. 3A and 3Billustrate depth images 300A and 300B that include a user's entire body,it should be understood that depth images may only capture a portion ofa user's body (e.g., from the user's waist up to the user's head).

A head region may be identified within a depth image in a number ofdifferent ways in accordance with various embodiments of the presentinvention. In some embodiments, the system may analyze the depth imageto automatically identify the head region. This may include identifyinga silhouette of an object in the depth image that generally correspondswith the size and shape of a human head. This approach is relativelycomputationally lightweight. As an example of this approach, in oneembodiment, objects may generally be identified within a depth image byfinding areas of pixels with similar depth and having edges created byareas of pixels with different depth. A number of different objects maybe identified in the depth image. As such, the different objects may beeach analyzed to determine which most closely corresponds with the sizeand shape of a human head. This may include first finding an object witha silhouette that closely corresponds with the size and shape of a humanbody and then finding a portion of the object that corresponds with thesize and shape of a human head.

In other embodiments, the head region may be manually set by a user. Forinstance, a user interface (UI) may be provided that allows the user tospecify the head position. The UI may include a real-time image of theuser and allow the user to move the boundary of a displayed head regionaround the user's head (e.g., by moving the left, right, top, and bottomsides of a bounding box). This approach may be particularly applicablein situations in which the user is not likely to move about such thatthe user's head remains in the same area, such as when the user isseated in a fixed chair. By allowing the user to manually set the headregion, a process of analyzing a depth image to identify a head region,such as that described above, may be bypassed.

In still further embodiments, the head region may be a fixed region setby the system, and the user may be instructed to position the user'shead in an area corresponding with the head region. For instance, a UImay be provided that shows a view of the user's head and a boxcorresponding with the head region. The user would then be instructed toposition himself/herself such that the user's head in the UI is locatedin the box shown in the UI.

Referring again to FIG. 2, a center of depth-mass is calculated for theuser's head based on the depth values of pixels in the head region, asshown at block 206. As indicated previously, a center of depth-mass maygenerally refer to a center of mass determined for a solid of uniformdensity based on depth values from pixels in the head region of thedepth image. The center of depth-mass may be based on a volumecorresponding with the user's head or a volume corresponding with thearea between the user's head and the reference position used to generatedepth values (i.e., the center of depth-mass for the user's head wouldbe directly proportional to the former volume, while the center ofdepth-mass for the user's head would be indirectly proportional to thelatter volume). Generally, an algorithm may be employed to calculate acenter of depth-mass for the user's head as a function of the depthvalue of each pixel (i.e., the distance from the object to the referenceposition as determined by the depth camera that captured the depthimage) and the X-position (i.e., horizontal position) of each pixel.This may include all pixels in the head region or a portion thereof. Insome embodiments, weighting may be applied as a function of theX-position of each pixel such that pixels near the edges are weightedless. This may help account for noise near the edges.

Conceptually, this is illustrated in FIGS. 4 and 5A-5B. In particular,FIG. 4 illustrates a plan view showing the top of a user's head 402 andan area 404 imaged as the head region in a depth image. Each pixel inthe depth image has a depth value that represents the distance Z_(N) ofa point on an object relative to some reference position 406.

As can be understood from FIG. 5A, when the user is looking forward, thedepth values on each side of a center point 506A in the head region 504Awill be approximately the same, such that the center of depth-mass (notshown in FIG. 5A) would be calculated to be near the center point 506A.However, if the user were to rotate the user's head 502B to the user'sleft, as shown in FIG. 5B, more of the user's head 502B within the areacorresponding with the head region 504B would shift to the user's leftand the center of mass of the user's head would also shift to the user'sleft. This would be reflected in the depth image in that the distance tothe user's head 502B would be collectively shorter on the left side thancompared to the right side. As a result, the center of depth-mass 508Bwould be calculated based on such depth values to be located to theuser's left of the center point 506B. As shown in FIG. 5B, the center ofdepth-mass 508B corresponds with a position along the X-direction.Alternatively, if the user were to rotate the user's head 502C to theuser's right, as shown in FIG. 5C, more of the user's head 502C withinthe area corresponding with the head region 504C would shift to theuser's right and the center of mass of the user's head would also shiftto the user's right. This would be reflected in the depth image in thatthe distance to the user's head 502C would be collectively shorter onthe right side than compared to the left side. As a result, the centerof depth-mass 508C would be calculated based on such depth values to belocated to the user's right of the center point 506C.

Turning back to FIG. 2 again, based on the center of depth-mass that wascalculated at block 206, the rotation of the user's head is determined,as shown at block 208. For instance, as is represented in FIG. 5B, theposition of the center of depth-mass 508B along the X-direction mayindicate an extent to which the user's head 502B has rotated to theuser's left. Likewise, as is represented in FIG. 5C, the position of thecenter of depth-mass 508C along the X-direction may indicate an extentto which the user's head 502C has rotated to the right. In someembodiments, the rotation of the user's head may be determined bycomparing the center of depth-mass of the user's head to a centerposition. For instance, this may include the position of the center ofdepth-mass 508B in FIG. 5B with the center position 506B.

The rotation of the user's head determined at block 208 may be employedin any of a variety of different applications. By way of example onlyand not limitation, in some embodiments, the rotation of the user's headmay be used to control the rotation of a camera viewpoint in a game orother virtual world.

In some embodiments, the center of depth-mass for a user's head may bedetermined using a background depth as a reference point to calculatethe depth or thickness of the user's head at each pixel relative to thebackground depth. This approach is described with reference to themethod 600 of FIG. 6 and conceptually illustrated in FIG. 7. As shown inFIG. 6, a background depth value is determined at block 602. This may bedone, for instance, after identifying a head region in a depth image(e.g., as discussed above with reference to block 204 of FIG. 2).

The background depth value may be determined in a variety of ways withinthe scope of embodiments of the present invention. In some embodiments,the maximum depth value from the pixels within the head region maysimply be set as the background depth value. In other embodiments, thebackground depth value may be a function of an average depth valuecalculated from the depth value of pixels in the head region. Forinstance, an average depth value for all pixels in the head region maybe calculated and a certain amount of depth (e.g., 10-20 cm) may beadded beyond that average depth value to generate the background depthvalue. In some instances, the average value may be calculated from onlya portion of the pixels in the head region, such as pixels in an areanear the center of the head region. In still further embodiments, thebackground depth value may be manually set by a user. For instance, amanual approach for setting the background depth value may be employedwhen a user manually sets a head region as discussed hereinabove.Generally, a UI may be provided that allows the user to not only moveand set a bounding area for the head region but also set the backgrounddepth value. Again, this approach may be more applicable tocircumstances in which the user is not likely to move about such thatthe user's head generally remains in the same spot.

As shown at block 604, pixels in the head region with depth values thatare greater than the background depth value may be ignored. As such,only pixels with depth values that are less than the background depthvalue would then be considered for further processing. In essence, theportion of the head region with depth values greater than the backgrounddepth value may be clipped and discarded from further processing.

Using the depth values for the remaining pixels, the background depthvalue, and the X-position (i.e., horizontal position) of the remainingpixels, the center of depth-mass for the user's head is calculated, asshown at block 606. In accordance with some embodiments, this mayinclude determining a depth (i.e., thickness) of the user's head at eachpixel based on the difference between the depth value for each pixel andthe background depth value. This is illustrated conceptually in FIG. 7.In particular, FIG. 7 illustrates a plan view showing the top of auser's head 702 and an area 704 corresponding with the head region in adepth image. The depth value for a pixel A would correspond with adistance Z_(A) 706 from a reference position (not shown) to a point 708on the user's head 702, and the background depth value would correspondwith a distance Z_(B) 710 from the reference position. The difference inthe distances Z_(A) 706 and Z_(B) 710 would correspond with a depth(i.e., thickness) of the user's head D_(A) 712 at the point 708.

Accordingly, in some embodiments, the center of depth-mass may bedetermined by calculating the depth (i.e., thickness) of the user's headat each pixel based on the difference between the depth value for eachpixel and the background depth value. The depth of the user's head ateach pixel may be multiplied by the X-position of each pixel and thosevalues may be summed and the summed value divided by the sum of thedepth of the user's head for each pixel to calculate the center ofdepth-mass for the user's head. This approach may be represented in thefollowing equation:

${C\; D\; M} = \frac{\sum{XiDi}}{\sum{Di}}$

Wherein CDM represents the center of depth-mass; X_(i) is the X-positionof pixel i; and D_(i) is the depth of the user's head at pixel i. Asnoted above, the depth of the user's head at a given pixel (i.e., D_(i))is the difference between the depth value for the pixel (i.e., thedistance from a reference point to a point on the object being imaged)and a background depth value. In this manner, the center of depth-massis analogous to a center of mass of a solid of uniform density, in whichthe solid corresponds with the thickness of the user's headcorresponding with the depth values and background depth value. In someembodiments, weighting may be applied as a function of the X-position ofeach pixel such that pixels near the edges are weighted less. This mayhelp account for noise near the edges.

Referring again to FIG. 6, in addition to determining the center ofdepth-mass, a center position for the user's head may also be determinedas shown at block 608. In some embodiments, this may simply be thecenter of the head region. In other embodiments, this may be the centerof the silhouette of the user's head, which may be considered tocorrespond with the pixels remaining after clipping pixels with depthvalues beyond the background depth value at block 604. In someembodiments, an equation similar to that described above for the centerof depth-mass may be used to determine the center of head position bysimply using the same value (e.g., a value of 1) for the depth of theuser's head for all pixels being considered.

As shown at block 610, a rotation of the user's head is determined bycomparing the center of depth-mass determined at block 606 and thecenter of head position determined at block 608. As noted previously,the rotation of the user's head may be employed in any of a variety ofdifferent applications. By way of example only and not limitation, insome embodiments, the rotation of the user's head may be used to controlthe rotation of a camera viewpoint in a game or other virtual world.

In some embodiments, if the user is wearing something on the user's head(e.g., a hat with a forward brim or some sort of helmet with the propershape), this can improve tracking by providing more depth-mass thatshifts left/right with rotation and normalizing head shape. This couldbe employed, for instance, in some situations if a user's head is nottracked well, or to ensure consistent experience. By way of specificexample to illustrate, this approach could be employed in a situationsuch as a simulation game at an amusement park where the users wear ahelmet, and since all users wear the same helmet, crazy-shaped hair orother significant shape/size differences between users won't cause aproblem for the system.

Although embodiments have been described herein in which a center ofdepth-mass has been determined in an X-direction (i.e., horizontaldirection) to determine the rotation of a user's head in the horizontalplane, it should be understood that some embodiments may employ similarapproaches to determine a center of depth-mass in a Y-direction (i.e.,vertical direction) to determine the rotation of the user's head in thevertical plane. Additionally, the process described herein to determinethe rotation of a user's head may be continuously repeated for differentframes of depth images to track the rotation of the user's head overtime. Any and all such variations and combinations thereof arecontemplated to be within the scope of embodiments of the presentinvention.

As can be understood, embodiments of the present invention provide fordetermining a rotation of a user's head based on a center of depth-masscalculated from a depth image. The present invention has been describedin relation to particular embodiments, which are intended in allrespects to be illustrative rather than restrictive. Alternativeembodiments will become apparent to those of ordinary skill in the artto which the present invention pertains without departing from itsscope.

From the foregoing, it will be seen that this invention is one welladapted to attain all the ends and objects set forth above, togetherwith other advantages which are obvious and inherent to the system andmethod. It will be understood that certain features and subcombinationsare of utility and may be employed without reference to other featuresand subcombinations. This is contemplated by and is within the scope ofthe claims.

1. One or more computer-storage media storing computer-useableinstructions that, when used by one or more computing devices, cause theone or more computing devices to perform a method, the methodcomprising: receiving depth image data for a depth image, the depthimage data including depth values for each of a plurality of pixels;identifying a head region in the depth image, the head regioncorresponding with a user's head; determining a background depth value;calculating a center of depth-mass for the user's head as a function ofdepth values for pixels in the head region, the background depth value,and positions of pixels in the head region; identifying a center of headposition; and determining a rotation of the user's head based on thecenter of depth-mass and the center of head position.
 2. The one or morecomputer storage media of claim 1, wherein identifying a head region inthe depth image comprises: identifying objects in the depth image basedon depth values; and analyzing the objects to identify a first objecthaving a silhouette that corresponds with the size and shape of a humanhead.
 3. The one or more computer storage media of claim 1, whereinidentifying a head region in the depth image comprises: providing a userinterface that allows the user to view an image of the user's head andto control a location of a boundary for the head region; and receivinguser input setting the location of the boundary for the head region. 4.The one or more computer storage media of claim 1, wherein determiningthe background depth value comprises: identifying a maximum depth valuefrom pixels within the head region; and setting the background depthvalue as a function of the maximum depth value.
 5. The one or morecomputer storage media of claim 1, wherein determining the backgrounddepth value comprises: calculating an average depth value based on depthvalues for at least a portion of pixels in the head region; and settingthe background depth value as a function of the average depth value. 6.The one or more computer storage media of claim 1, wherein determiningthe background depth value comprises receiving user input setting thebackground depth value.
 7. The one or more computer storage media ofclaim 1, wherein the center of depth-mass for the user's head iscalculated using pixels in the head region with a depth value that doesnot exceed the background depth value.
 8. The one or more computerstorage media of claim 1, wherein calculating the center of depth-massfor the user's head comprises: identifying a group of pixels from thehead region; determining a thickness of the user's head for each pixelfrom the group of pixels based on a difference between the depth valuefor each pixel from the group of pixels and the background depth value;calculating a first value by summing results from multiplying thethickness of the user's head for each pixel from the group of pixels bya position for each pixel from the group of pixels; calculating a secondvalue by summing the depth values for pixels in the group of pixels; andcalculating the center of depth-mass for the user's head by dividing thefirst value by the second value.
 9. The one or more computer storagemedia of claim 8, wherein the group of pixels from the head regionincludes pixels in the head region having depth values that do notexceed the background depth value.
 10. The one or more computer storagemedia of claim 1, wherein calculating the center of depth-mass for theuser's head comprises applying weighting as a function of pixel positionwithin the head region.
 11. The one or more computer storage media ofclaim 1, wherein identifying a center of head position comprisesidentifying a center position in the head region.
 12. The one or morecomputer storage media of claim 1, wherein identifying a center of headposition comprises identifying a center position of pixels in the headregion having depth values that do not exceed the background depthvalue.
 13. The one or more computer storage media of claim 1, whereinthe method further comprises using the rotation of the user's head tocontrol a camera viewpoint for a virtual environment.
 14. A method forusing a depth image to determine a rotation of a user's head, the methodcomprising: receiving depth image data corresponding with pixels for ahead region within the depth image; calculating a center of depth-massfor the user's head based on depth values of the pixels in the headregion; and determining the rotation of the user's head based on thecenter of depth-mass.
 15. The method of claim 14, wherein receivingdepth image data corresponding with the pixels for the head regioncomprises analyzing the depth image to identify an area containing theuser's head.
 16. The method of claim 14, wherein calculating a center ofdepth-mass for the user's head based on depth values of pixels in thehead region comprises: determining a background depth value; identifyinga subset of pixels in the head region that have a depth value that doesnot exceed the background depth value; and calculating the center ofdepth-mass as a function of the subset of pixels.
 17. The method ofclaim 16, wherein calculating the center of depth-mass as a function ofthe subset of pixels comprises computing a center of mass for a solid ofuniform density determined from the depth values for the subset ofpixels and the background depth value.
 18. The method of claim 14,wherein determining the rotation of the user's head based on the centerof depth-mass comprises: approximating a position in the head regioncorresponding with a center of the user's head; and determining therotation of the user's head based on a difference between a center ofdepth-mass and the position in the head region corresponding with thecenter of the user's head.
 19. The method of claim 14, wherein themethod further comprises using the rotation of the user's head tocontrol a camera viewpoint for a virtual environment.
 20. A computingdevice comprising: a processor configured to: receive depth values for aplurality of pixels in a depth image; analyze the depth values toidentify a head region that includes a first subset of pixels thatcontain a user's head; determine a background depth value by analyzingdepth values for the first subset of pixels; calculate a center ofdepth-mass as a function of depth values for a second subset of pixelsin the head region that have depth values that do not exceed thebackground depth value, the center of depth-mass being calculated bycomputing a center of mass for a solid of uniform density determinedfrom the depth values for the second subset of pixels and the backgrounddepth value; identify a position in the head region corresponding with acenter of the user's head; and determine a rotation of the user's headbased on the center of depth-mass and the position in the head regioncorresponding with the center of the user's head.